package py.com.sole.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import py.com.sole.dao.TutoriaDao;
import py.com.sole.dao.DaoFactory;

import py.com.sole.model.Tutoria;

public class TutoriaImpl implements TutoriaDao {

  EntityManager em = DaoFactory.getEm();

  @Override
  public Tutoria addTutoria(Tutoria tutoria) {

    try {
      em.getTransaction().begin();
      em.persist(tutoria);
      em.getTransaction().commit();
      return tutoria;
    } catch (Exception e) {
      //System.out.println("Error al intentar persistir "+e);
      e.printStackTrace();
      return null;
    }

  }

  @Override
  public void deleteTutoria(int id) {
    try {
      em.getTransaction().begin();
      em.remove(this.getTutoriaById(id));
      em.getTransaction().commit();

    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  @Override
  public void updateTutoria(Tutoria tutoria) {
    // TODO Auto-generated method stub
    try {
      em.getTransaction().begin();
      em.merge(this.getTutoriaById(tutoria.getId()));
      em.getTransaction().commit();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  @SuppressWarnings("all")
  @Override
  public List<Tutoria> getTutorias() {
    return em.createQuery("SELECT t FROM Tutoria t where t.activo=TRUE").getResultList();
  }

  @Override
  public Tutoria getTutoriaById(int id) {
    return (Tutoria) em.createQuery("SELECT t FROM Tutoria t where t.id = " + id).getSingleResult();
  }

  @Override
  public Tutoria getTutoriaByName(String value) {
    // TODO Auto-generated method stub
    try {
      Query q = em.createNamedQuery("Tutoria.findByDescripcion");
      q.setParameter("tipo_precio", value);
      return (Tutoria) q.getSingleResult();
    } catch (Exception e) {
      return null;
    }

  }

}
